#ifndef FILE_HPP_
#define FILE_HPP_

#include <stdio.h>
#include <gctypes.h>

class CFile
{
    public:
        CFile();
        CFile(const char * filepath, const char * mode);
        CFile(const u8 * memory, int memsize);
        ~CFile();
        int open(const char * filepath, const char * mode);
        int open(const u8 * memory, int memsize);
        void close();
        int read(u8 * ptr, size_t size);
        int write(const u8 * ptr, size_t size);
        int seek(long int offset, int origin);
        long int tell() { return Pos; };
        long int size() { return filesize; };
        void rewind() { seek(0, SEEK_SET); };
    protected:
        FILE * file_fd;
        const u8 * mem_file;
        u64 filesize;
        long int Pos;
};

#endif
